/*
 * @Author: fubobo
 * @Date: 2025-07-16 10:07:01
 * @LastEditors: Please set LastEditors
 * @LastEditTime: 2025-08-08 10:00:47
 * @Description: 请求拦截
 */
import { getToken } from "./cache";
import { stringifyQuery } from "./queryString";
import type { RequestConfig } from "@/api/types";

// H5 使用 VITE_APP_BASE_API 作为代理路径，其他平台使用 VITE_APP_API_URL 作为请求路径
let baseUrl = import.meta.env.VITE_APP_API_URL;
// #ifdef H5
baseUrl = import.meta.env.VITE_APP_BASE_API;
// #endif

// 拦截器配置
const httpInterceptor = {
  // 拦截前触发
  invoke(options: RequestConfig) {
    // 接口请求支持通过 query 参数配置 queryString
    if (options.query) {
      const queryStr = stringifyQuery(options.query);
      if (options.url.includes("?")) {
        options.url += `&${queryStr}`;
      } else {
        options.url += `?${queryStr}`;
      }
    }
    console.log(options);
    // 1. 请求超时
    options.timeout = 10000; // 10s
    options.url = baseUrl + options.url;
    // console.log(options);

    // 添加 token 请求头标识
    const token = getToken();
    if (token) {
      options.header = {
        Authorization: `Bearer ${token}`,
      };
    }
  },
};

export const requestInterceptor = {
  install() {
    // 拦截 request 请求
    uni.addInterceptor("request", httpInterceptor);
    // 拦截 uploadFile 文件上传
    uni.addInterceptor("uploadFile", httpInterceptor);
  },
};
